package com.qn.dao;

import com.qn.entity.*;
import com.qn.utils.MyPageInfo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * (Companydata)表数据库访问层
 *
 * @author ph
 * @since 2021-05-06 19:28:52
 */
@Repository
public interface CompanydataDao {

    Qxbcookie getCookie();

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    Companydata queryById(Integer id);

    /**
     * 遍历插入数据
     *
     * @param companyDataVo 企业变种类
     * @return int
     * @description TODO
     * @author LinXiPeng
     * @date 2021/11/5
     */
    int insert(@Param("companyDataVo") List<CompanyDataVo> companyDataVo);

    /**
     * 修改数据
     *
     * @param companydata 实例对象
     * @return 影响行数
     */
    int update(Companydata companydata);

    int update2(String email);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 影响行数
     */
    int deleteById(Integer id);

    /**
     * 查询指定行数据
     *
     * @param myPageInfo 查询条件
     * @return 对象列表
     */
    List<Companydata> findByPCIdLimit(@Param("myPageInfo") MyPageInfo myPageInfo);

    /**
     * 根据ID查询email
     *
     * @param id ID
     * @return email
     */
    String findByIdsEmail(Integer id);

    /**
     * 获取所有email
     */
    List<String> findAllEmail(@Param("myPageInfo") MyPageInfo myPageInfo);

    Integer deleteThisInfo(Integer id);

    /**
     * 发送邮件成功更新
     *
     * @return
     */
    int succeedUpd(String email);

    int succeedUpd2(@Param("list") List<String> list);

    int succeedUpdNull();

    /**
     * 发送邮件失败更新
     *
     * @return
     */
    int feilUpd(String email);

    int feilUpd2(List<String> list);

    //获取邮箱发送状态
    MailSendStatus getStatus();

    //获取失败邮箱发送集合
    List<String> getFailList();

    //清空发送状态
    void clear();

    /**
     * 查询所有发件人账号
     *
     * @return
     */
    List<Sendnumbers> getSendEmails(@Param("id") Integer id);

    List<String> findByEmail(Integer offset, Integer limit);

    Integer deleteThisSender(@Param("id") Integer id);

    Integer addOneSender(@Param("sendnumber") Sendnumbers sendnumbers);

    Integer editThisSender(@Param("sendnumber") Sendnumbers sendnumbers);

    Integer filterRepeat();

}

